System.Collections.Generic.HashSet<classe T>
Este artigo fornece observações complementares à documentação de referência para essa API.
A HashSet<T> classe fornece operações de conjunto de alto desempenho. Um conjunto é uma coleção que não contém elementos duplicados e cujos elementos não estão em nenhuma ordem específica.
A capacidade de um objeto HashSet<T> é o número de elementos que o objeto pode conter. A capacidade de um objeto HashSet<T> aumenta automaticamente à medida que elementos são adicionados ao objeto.
A HashSet<T> classe é baseada no modelo de conjuntos matemáticos e fornece operações de conjunto de alto desempenho semelhantes ao acesso às chaves das Dictionary<TKey,TValue> coleções OR Hashtable . Em termos simples, a HashSet<T> classe pode ser pensada como uma Dictionary<TKey,TValue> coleção sem valores.
Uma HashSet<T> coleção não é classificada e não pode conter elementos duplicados. Se a duplicação de ordem ou elemento for mais importante do que o desempenho do seu aplicativo, considere usar a List<T> classe junto com o Sort método.
HashSet<T> fornece muitas operações de conjunto matemático, como adição de conjunto (uniões) e subtração de conjunto. A tabela a seguir lista as operações fornecidas HashSet<T> e seus equivalentes matemáticos.
Operação HashSet | Equivalente matemático |
---|---|
UnionWith | União ou adição de conjunto |
IntersectWith | Cruzamento |
ExceptWith | Definir subtração |
SymmetricExceptWith | Diferença simétrica |
Além das operações de conjunto listadas, a classe também fornece métodos para determinar a HashSet<T> igualdade de conjuntos, sobreposição de conjuntos e se um conjunto é um subconjunto ou superconjunto de outro conjunto.
Somente .NET Framework: para objetos muito grandes HashSet<T> , você pode aumentar a capacidade máxima para 2 bilhões de elementos em um sistema de 64 bits definindo o enabled
<gcAllowVeryLargeObjects>
atributo do elemento de configuração como true
no ambiente de tempo de execução.
A classe HashSet<T> implementa a interface ISet<T>.
Operações de conjunto HashSet e LINQ
O LINQ fornece acesso às Distinct
operações , , Intersect
Union
e Except
set em qualquer fonte de dados que implemente as IEnumerable interfaces orIQueryable. HashSet<T> fornece uma coleção maior e mais robusta de operações de conjunto. Por exemplo, HashSet<T> fornece comparações como IsSubsetOf e IsSupersetOf.
A principal diferença entre as operações de conjunto LINQ e HashSet<T> as operações é que as operações de conjunto LINQ sempre retornam uma nova IEnumerable<T> coleção, enquanto os HashSet<T> métodos equivalentes modificam a coleção atual.
Normalmente, se você precisar criar um novo conjunto ou se seu aplicativo precisar acessar apenas as operações de conjunto fornecidas, o uso de operações de conjunto LINQ em qualquer IEnumerable<T> coleção ou matriz será suficiente. No entanto, se seu aplicativo exigir acesso a operações de conjunto adicionais, ou se não for desejável ou necessário criar uma nova coleção, use a HashSet<T> classe.
A tabela a seguir mostra as HashSet<T> operações e suas operações de conjunto LINQ equivalentes.
Operação HashSet | Equivalente ao LINQ |
---|---|
UnionWith | Union |
IntersectWith | Intersect |
ExceptWith | Except |
Não provido. | Distinct |
SymmetricExceptWith | Não provido. |
Overlaps | Não provido. |
IsSubsetOf | Não provido. |
IsProperSubsetOf | Não provido. |
IsSupersetOf | Não provido. |
IsProperSupersetOf | Não provido. |
SetEquals | Não provido. |